package com.feeyin.radar.crm.dao;

import java.math.BigDecimal;
import java.util.List;

import com.feeyin.radar.commons.Page;
import com.feeyin.radar.crm.model.CodeStore;
import com.feeyin.radar.crm.model.Contract;
import com.feeyin.radar.crm.model.ContractCase;

public abstract interface ContractDAO
{
  public abstract List getAllContracts();

  public abstract List getContractsByDynamic(Contract paramContract);

  public abstract List getContractsByCustomerId(Integer paramInteger);

  public abstract List getPageContractsByDynamic(Contract paramContract, Page paramPage);

  public abstract Integer getPageContractsCountByDynamic(Contract paramContract);

  public abstract List getTop5ContractOrBackCostOrGrossProfit(String paramString);

  public abstract Contract getContractByContractCode(String paramString);

  public abstract Contract getContractById(Integer paramInteger);

  public abstract BigDecimal getContractCostsByCustomerIdByContractId(Integer paramInteger1, Integer paramInteger2);

  public abstract BigDecimal getTotalContractCostByDynamic(Contract paramContract);

  public abstract BigDecimal getTotalContractReceivableByDynamic(Contract paramContract);

  public abstract boolean insertContract(Contract paramContract);

  public abstract boolean updateContractByDynamic(Contract paramContract);

  public abstract boolean updateContractCustomerIdById(Integer paramInteger1, Integer paramInteger2);

  public abstract boolean deleteContract(Integer paramInteger);

  public abstract List getContractByCustomer(Contract paramContract);

  public abstract Integer getCountForContractByCustomer(Contract paramContract);

  public abstract List getContractByUsers(Contract paramContract);

  public abstract Integer getCountForContractByUsers(Contract paramContract);

  public abstract List getContractInfoByUserId(Contract paramContract);

  public abstract List getEveryMonthNewContractCount(Contract paramContract);

  public abstract List getTotalYearNewContractCount(Contract paramContract);

  public abstract List getContractByCustomerId(Contract paramContract);

  public abstract BigDecimal getUsersAllContractGrossBackCost(Contract paramContract);

  public abstract BigDecimal getUsersAllContractDetailGrossCost(Contract paramContract);
  
  public abstract CodeStore getCodeStoreByType(String type);
  
  public abstract boolean insertContractCase(ContractCase contractCase);
  
  public abstract List<ContractCase> getContractCaseListByCaseCode(String caseCode);
  
  public abstract boolean deleteContractCase(String delContractCaseId);
  
  public abstract List<Contract> getContractByDeptId(Integer userId);
  
  public abstract List<Contract> getContractByUserId(Integer userId);
  
}